As animações do Maple V são sequências de figuras ( frames ) que são mostradas de forma rápida, num mesmo quadro. Esta descrição é valida tanto para as animações em 2D quanto para as em 3D.
Para criarmos uma animação em 3D, utilizaremos o comando animate3d. Abaixo veremos um exemplo de animação com o comando animate3D.
>
with(plots):
animate3d(cos(t+x)+sin(t+y),x=-2*Pi..2*Pi, y=-2*Pi..2*Pi,t=-2..4,orientation=[28,8],style=PATCHNOGRID);
Ao criarmos uma animação no Maple, aparecem duas barras de controle para que possamos fazer manipulações nesta animação:
Estas barras são selecionadas através de um botão do lado direito das mesmas, estando apenas uma disponível por vez.
A segunda barra é a mesma utilizada para estruturas 3D normais, sendo a primeira a mais importante. Nela encontramos os botões de
play
e
stop
, para iniciarmos e pararmos a animação, respectivamente.
O próximo botão que encotramos nos permite a transição passo-a-passo dos
frames
, sendo utilizado quando a animação encontra-se parada.
Os dois botões subsequentes nos permitem mudar a direção da animação, para frente e para trás, respectivamente.
Logo após, encontramos os botões que modificam a velocidade da animação, fazendo com que possamos aumentá-la ou diminuí-la.
Por fim, encontramos os botões que são utilizados para mostrar os
frames
em ciclo único ou em ciclo contínuo.
O comando animate3d possui basicamente 3 parâmetros além da função, sendo os dois primeiros o intervalo de x e y e o terceiro um intervalo t que especifica como as coordenadas dos frames variarão de um frame até o próximo. Abaixo temos um exemplo simples de animação utilizando apenas os parâmetros básicos.
> with(plots): with(plottools):
> animate3d((x^2)*(y^2)*t^2,x=-10..10,y=-10..10,t=-10..10);
O Maple possui um série de parâmetros associados ao comando animate3d . Abaixo veremos alguns exemplos comparativos da utilização desses parâmetros.
O parâmetro frames tem o objetivo de definir quantos frames serão mostrados num determinado ciclo. O Maple lida com 8 frames como default. A sintaxe utilizada é frames = n , sendo n o número de frames que serão exibidos. Tendo como base a nossa primeira animação, veremos a diferença ao utilizarmos um número menor de frames .
> with(plots):
> animate3d(cos(t+x)+sin(t+y),x=-2*Pi..2*Pi, y=-2*Pi..2*Pi,t=-2..4,frames=3);
> animate3d(cos(t+x)+sin(t+y),x=-2*Pi..2*Pi, y=-2*Pi..2*Pi,t=-2..4);
Muitos dos parâmetros válidos para gráficos estáticos são utilizados também para animações. Chamam mais atenção aqueles referentes a cores e formas. Veremos abaixo o parâmetro style e algumas de suas variações, utilizando uma única função.
> with(plots):
> animate3d(cos(t+x)+sin(t+y),x=-2*Pi..2*Pi, y=-2*Pi..2*Pi,t=-2..4,orientation=[30,10],style=HIDDEN);
> animate3d(cos(t+x)+sin(t+y),x=-2*Pi..2*Pi, y=-2*Pi..2*Pi,t=-2..4,orientation=[30,10],style=POINT);
> animate3d(cos(t+x)+sin(t+y),x=-2*Pi..2*Pi, y=-2*Pi..2*Pi,t=-2..4,orientation=[30,10],style=PATCH);
> animate3d(cos(t+x)+sin(t+y),x=-2*Pi..2*Pi, y=-2*Pi..2*Pi,t=-2..4,orientation=[30,10],style=CONTOUR);
Nós podemos criar animações sem utilizarmos o comando animate . Para isto, faremos uma combinação de vários plots e utilizaremos o comando display com o parâmetro insequence igual a true .
Abaixo temos o exemplo de uma animação utilizando o comando display e o comando rotate .
> with(plots): with(plottools):
> base:=display(octahedron([0,0,0],1),scaling=constrained,axes=none, lightmodel=light4,shading=zgreyscale,orientation=[130,80], style=PATCHNOGRID):
> N:=16:
> angles := [seq(Pi*k/(2*N),k=0..(N-1))]:
> for phi in angles do
> P[phi] := rotate(base,0,0,phi)
> od:
> display([seq(P[phi],phi=angles)],insequence=true);